package gui;
import logica.*;
import algoritmos.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;
/**
**********************************************************************************************<br/>
* Interfaz grafiaca de la aplicacion 
* @author Jefferson Amado Pe&ntilde;a Torres
**********************************************************************************************
* @version 1.00 2010/11/10
*/
public class Ventana extends  JFrame implements ActionListener {
  
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JPanel borrame1;
    private javax.swing.JPanel borrame2;
    private javax.swing.JButton btVerArchivo1;
    private javax.swing.JButton btVerArchivo3;
    private javax.swing.JDesktopPane escritorioPanel;
    private javax.swing.JInternalFrame intFrameCarga;
    private javax.swing.JInternalFrame intFrameSalida;
    private javax.swing.JInternalFrame intFrameTexto;
    private javax.swing.JMenuItem itmMnuAbrir;
    private javax.swing.JMenuItem itmMnuAcercade;
    private javax.swing.JMenuItem itmMnuApi;
    private javax.swing.JMenuItem itmMnuAyuda;
    private javax.swing.JMenuItem itmMnuIngenua;
    private javax.swing.JMenuItem itmMnuOptima;
    private javax.swing.JMenuItem itmMnuReset;
    private javax.swing.JMenuItem itmMnuSalir;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextArea jTextArea1;
    private javax.swing.JMenuBar jmnuBarra;
    private javax.swing.JLabel lblAristas;
    private javax.swing.JLabel lblJapeto;
    private javax.swing.JLabel lblObjetivos;
    private javax.swing.JLabel lblRutaArchivo;
    private javax.swing.JLabel lblVertices;
    private javax.swing.JMenu mnuArchivo;
    private javax.swing.JMenu mnuAyuda;
    private javax.swing.JMenu mnuHerramientas;
    private javax.swing.JPanel pnlInformacion;
    private javax.swing.JTextField txtAristas;
    private javax.swing.JTextField txtVertices;
    private javax.swing.JTextField txtRutaArchivo;
    private javax.swing.JTextField txtObjetivos;
    private ManejadorDeArchivo lectorDArchivos;
    private int[][] matrizEntrada;
    // End of variables declaration//GEN-END:variables
    
    /** Creates new form Ventana */
    public Ventana() {
	initComponents();
    }
    private void initComponents() {

	escritorioPanel = new javax.swing.JDesktopPane();
        intFrameTexto = new javax.swing.JInternalFrame();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTextArea1 = new javax.swing.JTextArea();
        intFrameSalida = new javax.swing.JInternalFrame();
        btVerArchivo3 = new javax.swing.JButton();
        borrame1 = new javax.swing.JPanel();
        intFrameCarga = new javax.swing.JInternalFrame();
        borrame2 = new javax.swing.JPanel();
        btVerArchivo1 = new javax.swing.JButton();
        pnlInformacion = new javax.swing.JPanel();
        lblRutaArchivo = new javax.swing.JLabel();
        txtRutaArchivo = new javax.swing.JTextField();
        lblVertices = new javax.swing.JLabel();
        lblObjetivos = new javax.swing.JLabel();
        lblAristas = new javax.swing.JLabel();
        txtObjetivos = new javax.swing.JTextField();
        txtAristas = new javax.swing.JTextField();
        txtVertices = new javax.swing.JTextField();
        lblJapeto = new javax.swing.JLabel();
        jmnuBarra = new javax.swing.JMenuBar();
        mnuArchivo = new javax.swing.JMenu();
        itmMnuAbrir = new javax.swing.JMenuItem();
        itmMnuSalir = new javax.swing.JMenuItem();
        mnuHerramientas = new javax.swing.JMenu();
        itmMnuReset = new javax.swing.JMenuItem();
        itmMnuIngenua = new javax.swing.JMenuItem();
        itmMnuOptima = new javax.swing.JMenuItem();
        mnuAyuda = new javax.swing.JMenu();
        itmMnuAcercade = new javax.swing.JMenuItem();
        itmMnuApi = new javax.swing.JMenuItem();
        itmMnuAyuda = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("::Enrutador Multicast:: v2.0");
        setResizable(false);

        escritorioPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Escritorio"));
        escritorioPanel.setToolTipText("Aqui se mostrara la carga de los archivos");
        escritorioPanel.setAutoscrolls(true);

        intFrameTexto.setTitle("Archivo");
        intFrameTexto.setToolTipText("Esta es la salida del algoritmo");
        intFrameTexto.setVisible(true);

        jTextArea1.setColumns(20);
        jTextArea1.setRows(40);
        jTextArea1.setAutoscrolls(true);
        jTextArea1.setCursor(new java.awt.Cursor(java.awt.Cursor.TEXT_CURSOR));
        jScrollPane1.setViewportView(jTextArea1);

        javax.swing.GroupLayout intFrameTextoLayout = new javax.swing.GroupLayout(intFrameTexto.getContentPane());
        intFrameTexto.getContentPane().setLayout(intFrameTextoLayout);
        intFrameTextoLayout.setHorizontalGroup(
            intFrameTextoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(intFrameTextoLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 304, Short.MAX_VALUE)
                .addContainerGap())
        );
        intFrameTextoLayout.setVerticalGroup(
            intFrameTextoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(intFrameTextoLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 254, Short.MAX_VALUE)
                .addContainerGap())
        );

        intFrameTexto.setBounds(390, 20, 330, 305);
        escritorioPanel.add(intFrameTexto, javax.swing.JLayeredPane.DEFAULT_LAYER);

        intFrameSalida.setTitle("Salida");
        intFrameSalida.setToolTipText("Esta es la salida del algoritmo");

        btVerArchivo3.setText("Ver Archivo");

        javax.swing.GroupLayout borrame1Layout = new javax.swing.GroupLayout(borrame1);
        borrame1.setLayout(borrame1Layout);
        borrame1Layout.setHorizontalGroup(
            borrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 304, Short.MAX_VALUE)
        );
        borrame1Layout.setVerticalGroup(
            borrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 224, Short.MAX_VALUE)
        );

        javax.swing.GroupLayout intFrameSalidaLayout = new javax.swing.GroupLayout(intFrameSalida.getContentPane());
        intFrameSalida.getContentPane().setLayout(intFrameSalidaLayout);
        intFrameSalida.setBounds(20, 40, 330, 296);
        escritorioPanel.add(intFrameSalida, javax.swing.JLayeredPane.DEFAULT_LAYER);

        intFrameCarga.setTitle("Entrada");
        intFrameCarga.setToolTipText("carga de grafo");
        intFrameCarga.setVisible(true);

        javax.swing.GroupLayout borrame2Layout = new javax.swing.GroupLayout(borrame2);
        borrame2.setLayout(borrame2Layout);
        borrame2Layout.setHorizontalGroup(
            borrame2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 304, Short.MAX_VALUE)
        );
        borrame2Layout.setVerticalGroup(
            borrame2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 222, Short.MAX_VALUE)
        );

        btVerArchivo1.setText("Ver Archivo");

        javax.swing.GroupLayout intFrameCargaLayout = new javax.swing.GroupLayout(intFrameCarga.getContentPane());
        intFrameCarga.getContentPane().setLayout(intFrameCargaLayout);
        intFrameCarga.setBounds(10, 20, 330, 290);
        escritorioPanel.add(intFrameCarga, javax.swing.JLayeredPane.DEFAULT_LAYER);

        pnlInformacion.setBackground(java.awt.Color.white);

        lblRutaArchivo.setText("Ruta del Archivo: ");

        txtRutaArchivo.setEditable(false);
        txtRutaArchivo.setToolTipText("");


        lblVertices.setText("Vertices:");

        lblObjetivos.setText("Objetivos:");

        lblAristas.setText("Aristas");

        txtObjetivos.setEditable(false);
        txtAristas.setEditable(false);
        txtVertices.setEditable(false);

        lblJapeto.setText("<html><ul>Ayuda<li>Carge un Archivo</li><li>Archivo->Abrir</li><li>Ctrl+O</li></ul></html>");

        javax.swing.GroupLayout pnlInformacionLayout = new javax.swing.GroupLayout(pnlInformacion);
        pnlInformacion.setLayout(pnlInformacionLayout);
        pnlInformacionLayout.setHorizontalGroup(
            pnlInformacionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlInformacionLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(pnlInformacionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(pnlInformacionLayout.createSequentialGroup()
                        .addComponent(lblVertices)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(txtVertices, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(lblRutaArchivo))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(pnlInformacionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(pnlInformacionLayout.createSequentialGroup()
                        .addComponent(lblObjetivos)
                        .addGap(4, 4, 4)
                        .addComponent(txtObjetivos, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(lblAristas)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(txtAristas, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(txtRutaArchivo, javax.swing.GroupLayout.PREFERRED_SIZE, 265, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 124, Short.MAX_VALUE)
                .addComponent(lblJapeto, javax.swing.GroupLayout.PREFERRED_SIZE, 218, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );
        pnlInformacionLayout.setVerticalGroup(
            pnlInformacionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlInformacionLayout.createSequentialGroup()
                .addGroup(pnlInformacionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(pnlInformacionLayout.createSequentialGroup()
                        .addGap(15, 15, 15)
                        .addGroup(pnlInformacionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(lblVertices)
                            .addComponent(txtVertices, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(lblObjetivos)
                            .addComponent(txtObjetivos, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(lblAristas)
                            .addComponent(txtAristas, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(pnlInformacionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(lblRutaArchivo)
                            .addComponent(txtRutaArchivo, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addGroup(pnlInformacionLayout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(lblJapeto, javax.swing.GroupLayout.PREFERRED_SIZE, 63, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(20, Short.MAX_VALUE))
        );

	mnuArchivo.setText("Archivo");
	mnuArchivo.setToolTipText("mnuArchivo");


	itmMnuAbrir.setAccelerator( KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O, java.awt.event.InputEvent.CTRL_MASK));
	itmMnuAbrir.setText("Abrir");
	itmMnuAbrir.addActionListener(this);
	mnuArchivo.add(itmMnuAbrir);

	itmMnuSalir.setAccelerator( KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Q, java.awt.event.InputEvent.CTRL_MASK));
	itmMnuSalir.setText("Salir");
	itmMnuSalir.addActionListener(this);
	mnuArchivo.add(itmMnuSalir);

	jmnuBarra.add(mnuArchivo);

	mnuHerramientas.setText("Herramientas");

	itmMnuReset.setAccelerator( KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F6, 0));
	itmMnuReset.setText("Reset");
	itmMnuReset.addActionListener(this);
	itmMnuReset.setEnabled(false);
	mnuHerramientas.add(itmMnuReset);

	itmMnuIngenua.setAccelerator( KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F5, java.awt.event.InputEvent.SHIFT_MASK));
	itmMnuIngenua.setText("Ingenua");
	itmMnuIngenua.addActionListener(this);
	itmMnuIngenua.setEnabled(false);
	mnuHerramientas.add(itmMnuIngenua);

	itmMnuOptima.setAccelerator( KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F5, 0));
	itmMnuOptima.setText("Optima");
	itmMnuOptima.addActionListener(this);
	itmMnuOptima.setEnabled(false);
	mnuHerramientas.add(itmMnuOptima);

	jmnuBarra.add(mnuHerramientas);

	mnuAyuda.setText("Ayuda");

	itmMnuAcercade.setAccelerator( KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F2, 0));
	itmMnuAcercade.setText("Acerca de");
	itmMnuAcercade.addActionListener(this);
	mnuAyuda.add(itmMnuAcercade);

	itmMnuApi.setText("API de");
	itmMnuApi.addActionListener(this);
	mnuAyuda.add(itmMnuApi);

	itmMnuAyuda.setAccelerator( KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F1, 0));
	itmMnuAyuda.setText("Ayuda");
	itmMnuAyuda.addActionListener(this);
	mnuAyuda.add(itmMnuAyuda);
	jmnuBarra.add(mnuAyuda);
	setJMenuBar(jmnuBarra);
	
	 javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
                    .addComponent(escritorioPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 754, Short.MAX_VALUE)
                    .addComponent(pnlInformacion, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(pnlInformacion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(escritorioPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 358, Short.MAX_VALUE)
                .addContainerGap())
        );
	intFrameCarga.setVisible(false);
	intFrameSalida.setVisible(false);
	intFrameTexto.setVisible(false);
	pack();
	setDefaultCloseOperation( WindowConstants.EXIT_ON_CLOSE);
	setVisible(true);
    }//
	public void habilitarHerramientas(boolean estado){
		itmMnuReset.setEnabled(estado);
		itmMnuIngenua.setEnabled(estado);
		itmMnuOptima.setEnabled(estado);
	}
        private void convertirMatriz(){
            Object []  entrada=lectorDArchivos.objEnrrutamientoMulticast.getMatriz();
            this.matrizEntrada = new int[entrada.length-3][((int[])entrada[1]).length];
                for(int a=1;a<entrada.length-2;a++){
                        matrizEntrada[a-1]=(int[])entrada[a];
                }
        }
	public void actionPerformed(ActionEvent e) {
		if(e.getSource()==itmMnuSalir){
			System.exit(0);
		}
		if(e.getSource()==itmMnuReset){
			intFrameCarga.setVisible(false);
			intFrameSalida.setVisible(false);
			intFrameTexto.setVisible(false);
			habilitarHerramientas(false);
		}
		if(e.getSource()==itmMnuIngenua){
			//System.out.println("\n\nAlgoritmo Ingenuo");
                        TiempoEjecucion t = new TiempoEjecucion();//tiempo
                        t.iniciar();//tiempo
                        matrizPeso mPeso= new matrizPeso(matrizEntrada,lectorDArchivos.objEnrrutamientoMulticast.getCostos());
                        int[][] matrizPeso=mPeso.calcularMatriz();
                        Algoritmos objAlIngenuo=new AlgoritmoIngenuo(matrizPeso,lectorDArchivos.objEnrrutamientoMulticast.getObjetivos());
                        objAlIngenuo.crearSolucion();
                        final int[][] matrizSalida= new matrizAdyacencia().transformar(matrizEntrada,objAlIngenuo.getSolucion());
                        t.terminar();
                        Visualizador vsl=new Visualizador(intFrameSalida,lectorDArchivos.objEnrrutamientoMulticast.toGrafo(matrizSalida),true);
                            vsl.btVerArchivo.addActionListener (new ActionListener(){
                              public void actionPerformed (ActionEvent e){
                                jTextArea1.setText(lectorDArchivos.objEnrrutamientoMulticast.nVertices+" "+lectorDArchivos.objEnrrutamientoMulticast.nAristas+"\n"+ManejadorDeArchivo.toString(matrizSalida));
                                     intFrameTexto.setVisible(true);
                                     lblJapeto.setText("<html>Ayuda<br/><ul><li>Este es la matriz obtenida por el algoritmo ingenuo</li></ul></html>");
                                    }
                                });
                            vsl.btGuardar.addActionListener (new ActionListener(){
                            public void actionPerformed (ActionEvent e){
                              JFileChooser chooser = new JFileChooser("./salidas");
                                chooser.setFileFilter(new FileFilter(){
				        public boolean accept(File f) {
					  return f.getName().toLowerCase().endsWith(".em") || f.getName().toLowerCase().endsWith(".emo") || f.isDirectory();
					}
					public String getDescription() {
					  return "Archivos EnrutadorMulticast";
					}
				      });
                                      int returnVal = chooser.showSaveDialog(null);
                                      if(returnVal == JFileChooser.APPROVE_OPTION) {
                                            ManejadorDeArchivo.saveArchivo(chooser.getSelectedFile().getPath(),lectorDArchivos.objEnrrutamientoMulticast.nVertices+" "+lectorDArchivos.objEnrrutamientoMulticast.nAristas+"\n"+ManejadorDeArchivo.toString(matrizSalida));
                                      }
                            }
                            });
                        vsl.setVisible(true);
                        lblJapeto.setText("<html>Ayuda<br/><ul><li>Veriica la salida o guarda el archivo</li></ul></html>");
                }
		if(e.getSource()==itmMnuOptima){
                    Algoritmos objAlOptimo = new AlgoritmoOptimo(matrizEntrada,lectorDArchivos.objEnrrutamientoMulticast.getCostos(),lectorDArchivos.objEnrrutamientoMulticast.getObjetivos());
                    TiempoEjecucion t = new TiempoEjecucion();//tiempo
                    t.iniciar();//tiempo
                    objAlOptimo.crearSolucion();
                    int[][] matrizSa=objAlOptimo.getSolucion();
                    matrizAdyacencia m = new matrizAdyacencia();
                    final int[][] matrizSalida = m.transformar(matrizEntrada, matrizSa);
                    t.terminar();
                    Visualizador vsl=new Visualizador(intFrameSalida,lectorDArchivos.objEnrrutamientoMulticast.toGrafo(matrizSalida),true);
                        vsl.btVerArchivo.addActionListener (new ActionListener(){
                          public void actionPerformed (ActionEvent e){
                            jTextArea1.setText(lectorDArchivos.objEnrrutamientoMulticast.nVertices+" "+lectorDArchivos.objEnrrutamientoMulticast.nAristas+"\n"+ManejadorDeArchivo.toString(matrizSalida));
                                 intFrameTexto.setVisible(true);
                                 lblJapeto.setText("<html>Ayuda<br/><ul><li>Este es la matriz obtenida por el algoritmo optimo</li></ul></html>");
                                }
                            });
                        vsl.btGuardar.addActionListener (new ActionListener(){
                            public void actionPerformed (ActionEvent e){
                              JFileChooser chooser = new JFileChooser("./salidas");
                                chooser.setFileFilter(new FileFilter(){
				        public boolean accept(File f) {
					  return f.getName().toLowerCase().endsWith(".em") || f.getName().toLowerCase().endsWith(".emo") || f.isDirectory();
					}
					public String getDescription() {
					  return "Archivos EnrutadorMulticast";
					}
				      });
                                      int returnVal = chooser.showSaveDialog(null);
                                      if(returnVal == JFileChooser.APPROVE_OPTION) {
                                            ManejadorDeArchivo.saveArchivo(chooser.getSelectedFile().getPath(),lectorDArchivos.objEnrrutamientoMulticast.nVertices+" "+lectorDArchivos.objEnrrutamientoMulticast.nAristas+"\n"+ManejadorDeArchivo.toString(matrizSalida));
                                      }
                            }
                        });
                    vsl.setVisible(true);
                    lblJapeto.setText("<html>Ayuda<br/><ul><li>Veriica la salida o guarda el archivo</li></ul></html>");
		}
		if(e.getSource()==itmMnuAbrir){
			JFileChooser chooser = new JFileChooser("./entradas");
			    chooser.setFileFilter(new FileFilter(){
				        public boolean accept(File f) {
					  return f.getName().toLowerCase().endsWith(".em") || f.getName().toLowerCase().endsWith(".emo") || f.isDirectory();
					}
					public String getDescription() {
					  return "Archivos EnrutadorMulticast";
					}
				      });
			int returnVal = chooser.showOpenDialog(this);
			if(returnVal == JFileChooser.APPROVE_OPTION) {
				 lectorDArchivos=new ManejadorDeArchivo(chooser.getSelectedFile());
						lectorDArchivos.crearMatrizDesdeArchivo();
					txtRutaArchivo.setText(chooser.getSelectedFile().getPath());
						txtObjetivos.setText(lectorDArchivos.objEnrrutamientoMulticast.nObjetivos+"");
						txtAristas.setText(lectorDArchivos.objEnrrutamientoMulticast.nAristas+"");
						txtVertices.setText(lectorDArchivos.objEnrrutamientoMulticast.nVertices+"");
						habilitarHerramientas(true);
						//solo para dibujar demaciada cohesion
						Visualizador vsl=new Visualizador(intFrameCarga,lectorDArchivos.objEnrrutamientoMulticast.getGrafo(),false);
							vsl.btVerArchivo.addActionListener (new ActionListener(){
								public void actionPerformed (ActionEvent e){
									jTextArea1.setText(lectorDArchivos.toString());
									intFrameTexto.setVisible(true);
								}
							});
							vsl.setVisible(true);
						convertirMatriz();
                                              lblJapeto.setText("<html><ul>Ayuda<li>Ejecuta un algoritmo</li><li>Ingenuo:May+F5</li><li>Optima:F5</li></ul></html>");
			}
		}
	}
}
//Jefferson Amado Peña Torres
